SEP 4 -- Crontab监控
Head
- Author: larry
- Status: final
- Type: Standards
- Created: 2017-07-25
摘要
为Crontab做监控。
动机
Crontab如果报错或者没跑,很难立刻知道,而crontab往往用来处理数据一致性,一旦停跑或者没跑成功,影响面积很大,所以必须做到能实时感知这个状态,遇到错误能立刻报警。
问题
Crontab运行中,我们遇到的问题有两个。
- crontab脚本是否报错了。
- crontab脚本是否按照预期跑起来了。
思路
脚本心跳
每个脚本启动后,在db中记录一条记录,表示自己跑过了。
脚本报错时发送邮件报警。
脚本监控
启动一个监控工具(cron-monitor),专门监控脚本是否跑过。
扫描crontab配置,在每个固定时间点过几分钟后,去db里查询是否有对应的记录,没有就说明没有按照要求跑起来,发邮件报警。
监控脚本管理
用supervisor之类的工具管理cron-monitor进程,以及未来可能出现的其他监控进程,确保进程意外死掉后能再次被重启。
对监控工具的监控
supervisor之类的管理程序自己也是有可能会挂掉,所以也需要对这个工具本身的保活性做监控。
在supervisor管理下启动一个sv-monitor进程,这个进程的主要目的就是监控supervisor的存活性,因为单机不可靠,所以至少部署两台机器,互相监控。
- 配置系统中总共有多个监控实例。
- 每个实例报告自身的心跳给db。
- 周期性的检查其他监控实例的心跳是否存在,不存在就报警。
- 每个实例的周期不同。